ШАГ 8 - Простые типы соединений

Если в SQL-запросе необходимо получить данные из двух или более таблиц, используют соединения таблиц. Различают два типа соединений:

Соединения по равенству

Соединение в простейшем варианте определяется предложением:

SELECT столбцы FROM таблица1, таблица2 WHERE условие_соединения

Поскольку в разных таблицах имена столбцов могут совпадать (например столбцы DEPTNO в таблицах EMP и DEPT) то их принято именовать в виде имя_таблицы . имя_столбца.
Работая с соединениями удобно применять вместо имен таблиц их псевдонимы.

Правило: Если во фразе FROM введены псевдонимы, то во фразе SELECT должны в качестве префиксов имен столбцов использоваться эти псевдонимы а не имена таблиц.

Пример: Выдадим список должностей всех сотрудников, указав названия отделов, в которых они работают:

SELECT E.ENAME, D.DEPTNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO ORDER BY D.DEPTNO;

Соединения не по равенству

Соединения таблиц выполняются по условиям, отличным от равенства значений столбцов.
В качестве примера определим в какую категорию по оплате входит каждый сотрудник. Соединим таблицы EMP и SALGRADE, проверяя оператором BETWEEN между какими границами LOSAL и HISAL находится заработная плата SAL сотрудника:

SELECT E.NAME, E.SAL, S.GRADE FROM EMP E, SALGRADE S WHERE E.SAL BETWEEN S.LOSAL BETWEENAND S.HISAL;

Замечание: При ошибках в соединениях могут образовываться декартовы произведения, в которых каждая строка одной таблицы комбинируется с каждой строкой другой. В практике получаются таблицы очень большого размера и SQL-запрос работает очень долго.

Автор: Michael Nemtsev aka 'LaFlour'

Hosted by uCoz